package accesoADatos;

import oda.ODT_Devoluciones;
import oda.ODT_Honorario;
import oda.ODT_HonorariosCausados;
import oda.ODT_PagosEfectuados;

import org.json.JSONException;
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;

import util.Cons;

public class TRN_honorario {
	private String MontoVacio="0.00";
	public JSONObject  StringToJson(String entrada){
		try {
			JSONObject salida =new JSONObject();
			org.json.JSONObject honoEntrada = new org.json.JSONObject(entrada);
			
			//////////////////////////lista de pagos efectuados/////////////////////////////////
			org.json.JSONArray listPago =(org.json.JSONArray)honoEntrada.get(Cons._Honorario_ListaPagosEfectuados);
            //lista pagos
			JSONArray listaPago_simple=new JSONArray();
            for (int i = 0; i < listPago.length(); i++) {
                JSONObject objSimple= new JSONObject();
                org.json.JSONObject obj=new org.json.JSONObject();
                obj=(org.json.JSONObject) listPago.get(i);
                
                //fecha pago
                objSimple.put(Cons._Honorario_ListaPagosEfectuados_fecha, 
                		obj.get(Cons._Honorario_ListaPagosEfectuados_fecha));
                //monto pago
                objSimple.put(Cons._Honorario_ListaPagosEfectuados_monto,
                		obj.get(Cons._Honorario_ListaPagosEfectuados_monto));

                listaPago_simple.add(objSimple);
                
            }
            salida.put(Cons._Honorario_ListaPagosEfectuados, listaPago_simple);
            ///////////////////////////////////////////////////////////////////////////////////////
			//////////////////////////    lista de Devoluciones   /////////////////////////////////
			org.json.JSONArray listDevoluciones =(org.json.JSONArray)honoEntrada.get(Cons._Honorario_ListaDevoluciones);
            //lista devoluciones
			JSONArray listaDevoluciones_simple=new JSONArray();
            for (int i = 0; i < listDevoluciones.length(); i++) {
                JSONObject objSimple= new JSONObject();
                org.json.JSONObject obj=new org.json.JSONObject();
                obj=(org.json.JSONObject) listDevoluciones.get(i);
                
                String monto=(String) obj.get(Cons._Honorario_ListaDevoluciones_monot);
                
                //evaluacion si el monto de la devolucion biene vacio
                if(!monto.endsWith(MontoVacio))
                {
                	
                	 //monto devolucion
                    objSimple.put(Cons._Honorario_ListaDevoluciones_monot,
                    		obj.get(Cons._Honorario_ListaDevoluciones_monot));
                    
                	//fecha devolucion
                    objSimple.put(Cons._Honorario_ListaDevoluciones_fecha, 
                    		obj.get(Cons._Honorario_ListaDevoluciones_fecha));
                    
                }
                else
                {
                	
                	//monto devolucion
                	objSimple.put(Cons._Honorario_ListaDevoluciones_monot,"0.00");
                	//fecha devolucion
                	objSimple.put(Cons._Honorario_ListaDevoluciones_fecha,"        ");
                	
                }
              
                listaDevoluciones_simple.add(objSimple);
                
            }
            salida.put(Cons._Honorario_ListaDevoluciones, listaDevoluciones_simple);
            ///////////////////////////////////////////////////////////////////////////////////////
			//////////////////////////    lista de honora   /////////////////////////////////
			org.json.JSONArray listHonorarios =(org.json.JSONArray)honoEntrada.get(Cons._Honorario_ListaHonorario);
            //lista devoluciones
			JSONArray listaHonorio_simple=new JSONArray();
            for (int i = 0; i < listHonorarios.length(); i++) {
                JSONObject objSimple= new JSONObject();
                org.json.JSONObject obj=new org.json.JSONObject();
                obj=(org.json.JSONObject) listHonorarios.get(i);
                
                //nombre doc honorario
                objSimple.put(Cons._honorario_listaHonorario_NombreDocumento, 
                		obj.get(Cons._honorario_listaHonorario_NombreDocumento));
                //monto pago
                objSimple.put(Cons._honorario_listaHonorario_monto,
                		obj.get(Cons._honorario_listaHonorario_monto));

                listaHonorio_simple.add(objSimple);
                
            }
            salida.put(Cons._Honorario_ListaHonorario, listaHonorio_simple);
            ///////////////////////////////////////////////////////////////////////////////////////
            return salida;
           // System.out.println(lista_simple);
        } catch (JSONException ex) {
        	
        	return null;
          
        }
		
	}
	
	public JSONObject getTest(){
		JSONObject obj=new JSONObject();
	    JSONArray list = new JSONArray();
	    JSONArray list2 = new JSONArray();
	    JSONObject SUBobj1=new JSONObject();
	    JSONObject SUBobj2=new JSONObject();
	    JSONObject SUBobj3=new JSONObject();
	    JSONObject SUB_obj1=new JSONObject();
	    JSONObject SUB_obj2=new JSONObject();
	    JSONObject SUB_obj3=new JSONObject();
	    
	    SUBobj1.put("monto","500.00");
	    SUBobj1.put("fecha","11/10/2011");
	    
	    SUBobj2.put("monto","200.00");
	    SUBobj2.put("fecha","12/12/2011");
	    
	    SUBobj3.put("monto","30.00");
	    SUBobj3.put("fecha","13/03/2103");
	            list.add(SUBobj1);
	            list.add(SUBobj2);
	            list.add(SUBobj3);
	    ///////////////////////////////////////////////////////////////
	    SUB_obj1.put("monto","100.00");
	    SUB_obj1.put("IdDoc","13R123123");
	    
	    SUB_obj2.put("monto","25.00");
	    SUB_obj2.put("IdDoc","13R123123");
	    
	    SUB_obj3.put("monto","36.00");
	    SUB_obj3.put("IdDoc","13R123123");
	    //////////////////////////////////////////////////////////////
	    
	    
	            list2.add(SUB_obj1);
	            list2.add(SUB_obj2);
	            list2.add(SUB_obj3);
	                
	            obj.put("fecha","22/11/2013");
	            obj.put("lista honorarios",list2);
	            obj.put("lista devoluciones",list);
	            obj.put("listapagos efectuados",list);
	        
	        
	            return obj;
	
	}
	
	public ODT_Honorario getHonorario(JSONObject JSO_honorario){
		ODT_Honorario salida= new ODT_Honorario();
		//castiando fecha
		//Object fecha=JSO_honorario.get(Cons._Honorario_Fecha);
		//String str_fecha= fecha.toString();
		//casting lista honorarios
		Object LstHonorario=JSO_honorario.get(Cons._Honorario_ListaHonorario);
		JSONArray JSONArray_Honorario=(JSONArray)LstHonorario;
		//castin lista de devoluciones
		Object LstDevoluciones=JSO_honorario.get(Cons._Honorario_ListaDevoluciones);
		JSONArray JSONArray_Devolucion=(JSONArray)LstDevoluciones;
		//casting lista
		Object LstPagos=JSO_honorario.get(Cons._Honorario_ListaPagosEfectuados);
		JSONArray JSONArray_Pagos=(JSONArray)LstPagos;
		
		//setear los valores en el ODT
		//salida.setFecha_ingreso(str_fecha);
		
		for (int i = 0; i < JSONArray_Honorario.size(); i++) 
		{
			
			ODT_HonorariosCausados honorariosCausados=new ODT_HonorariosCausados();
			JSONObject objHonorario=(JSONObject) JSONArray_Honorario.get(i);
			//asignar monto
			String STR_monto=(String) objHonorario.get(Cons._honorario_listaHonorario_monto);
			float monto= Float.parseFloat(STR_monto);
			honorariosCausados.setMonto(monto);
			//asignar 
			String STR_NombreDoc=(String) objHonorario.get(Cons._honorario_listaHonorario_NombreDocumento);
			honorariosCausados.setNombreDocumento(STR_NombreDoc);
			//agregar honorarios Causados a la estructura de honorarios
			salida.addHonorario(honorariosCausados);
			
		}
		
		for (int i = 0; i < JSONArray_Devolucion.size(); i++) 
		{
			
			ODT_Devoluciones devolucion =new ODT_Devoluciones();
			
			JSONObject objDevolucion=(JSONObject) JSONArray_Devolucion.get(i);
			//asignar monto
			String STR_monto=(String) objDevolucion.get(Cons._Honorario_ListaDevoluciones_monot);
			float monto= Float.parseFloat(STR_monto);
			devolucion.setMonto(monto);
			//asignar 
			String STR_FechaDevolucion=(String) objDevolucion.get(Cons._Honorario_ListaDevoluciones_fecha);
			devolucion.setFecha(STR_FechaDevolucion);
			//agregar a las devoluciones  a la estru de honoraariso
			salida.addDevoluciones(devolucion);
			
		}
		
		for (int i = 0; i < JSONArray_Pagos.size(); i++) {
			ODT_PagosEfectuados PagoEfectuado =new ODT_PagosEfectuados();

			JSONObject objPago=(JSONObject) JSONArray_Pagos.get(i);
			//asignar monto
			String STR_monto=(String) objPago.get(Cons._Honorario_ListaPagosEfectuados_monto);
			float monto= Float.parseFloat(STR_monto);
			PagoEfectuado.setMonto(monto);
			//asignar 
			String STR_Fecha=(String) objPago.get(Cons._Honorario_ListaPagosEfectuados_fecha);
			PagoEfectuado.setFecha(STR_Fecha);
			//agregar a las devoluciones  a la estru de honoraariso
			salida.addPagoEfectuado(PagoEfectuado);
		}
		
		
		
		return salida;
	}

}
